package 设计模式.创建型.工厂模式.简单工厂模式.将重构再进一步六;

import 设计模式.创建型.工厂模式.简单工厂模式.IRuleConfigParser;
import 设计模式.创建型.工厂模式.简单工厂模式.InvalidRuleConfigException;
import 设计模式.创建型.工厂模式.简单工厂模式.RuleConfig;

public class RuleConfigSource {
    public RuleConfig load(String ruleConfigFilePath) throws InvalidRuleConfigException {
        String ruleConfigFileExtension = getFileExtension(ruleConfigFilePath);
        IRuleConfigParserFactory parserFactory = (IRuleConfigParserFactory) RuleConfigParserFactoryMap.getParserFactory(ruleConfigFileExtension);
        if (parserFactory == null) {
            throw new InvalidRuleConfigException("Rule config file format is not supported: " + ruleConfigFilePath);
        }
        IRuleConfigParser parser = parserFactory.createParser();
        String configText = ""; //从ruleConfigFilePath文件中读取配置文本到configText中
        RuleConfig ruleConfig = parser.parse(configText);
        return ruleConfig;
    }

    private String getFileExtension(String filePath) {
        //...解析文件名获取扩展名，比如rule.json，返回json return "json";
        return "json";
    }
}